package com.icebartech.core.modules;

import java.util.List;

/**
 * ClassName: BaseMapper 
 * @Description: 基础mapper层接口
 *
 * =================================================================================================
 *     Task ID			  Date			     Author		      Description
 * ----------------+----------------+-------------------+-------------------------------------------
 *
 */
public interface BaseMapper {
	
    /**
     * @Description: 新增对象，新增所有字段
     * @param record
     * @return   
     * @date 2016年9月3日
     */
    <Entity> int insert(Entity record);
    
    /**
     * 新增对象，只新增非空字段
     * @param record
     * @return
     */
    <Entity> int insertSelective(Entity record);
    
    
    /**
     * @Description: 更新对象，所有字段都更新
     * @param record
     * @return   
     * @date 2016年9月3日
     */
    <Entity> int updateByPrimaryKey(Entity record);
    
    /**
     * @Description: 更新对象，只更新非空字段
     * @param record
     * @return   
     * @date 2016年9月3日
     */
    <Entity> int updateByPrimaryKeySelective(Entity record);
    
    
	/**
	 * @Description: 根据ID删除对象
	 * @param id
	 * @return   
	 * @date 2016年9月3日
	 */
    int deleteByPrimaryKey(Long id);
    
    /**
     * 根据主键id获取对应的对象
     * @param id
     * @return
     */
    <Entity> Entity selectByPrimaryKey(Long id);
    
    /**
     * 根据条件查询对应的数据
     * @param record
     * @return
     */
    <Entity> List<Entity> selectBySelective(Entity record);
    
}
